import { query } from '../../config/db.js';
import logger from '../../config/logger.js';

// 社团名称列表
const clubNames = [
  '篮球社', '足球社', '乒乓球社', '羽毛球社', '网球社',
  '音乐社', '舞蹈社', '戏剧社', '摄影社', '绘画社',
  '书法社', '文学社', '科技社', '机器人社', '航模社',
  '环保社', '志愿者社', '辩论社', '演讲社', '象棋社',
  '围棋社', '动漫社'
];

// 社团位置列表
const locations = [
  '体育馆1楼', '体育馆2楼', '艺术楼101室', '艺术楼202室',
  '科技楼303室', '科技楼404室', '图书馆1楼', '图书馆2楼',
  '教学楼B栋101室', '教学楼B栋202室', '教学楼C栋303室'
];

// 生成随机备注
function generateRemark() {
  const remarks = ['活跃度高', '新成立', '多次获奖', '成员众多', '专业性强', ''];
  return remarks[Math.floor(Math.random() * remarks.length)];
}

async function seedClubs() {
  try {
    logger.info('开始播种社团数据...');

    // 先清空社团表
    // 禁用外键约束
    await query('SET FOREIGN_KEY_CHECKS = 0');
    await query('TRUNCATE TABLE clubs');
    // 启用外键约束
    await query('SET FOREIGN_KEY_CHECKS = 1');
    // 重置自增序列
    await query('ALTER TABLE clubs AUTO_INCREMENT = 1');
    logger.info('社团表已清空');

    // 生成22个社团数据
    const clubs = [];
    for (let i = 0; i < 22; i++) {
      // 确保社团名称不重复
      const clubName = clubNames[i];
      const memberCount = Math.floor(Math.random() * 50) + 10; // 10-60人
      const location = locations[Math.floor(Math.random() * locations.length)];
      const remark = generateRemark();

      clubs.push({
        club_name: clubName,
        member_count: memberCount,
        location: location,
        remarks: remark
      });
    }

    // 插入社团数据
    for (const club of clubs) {
      await query(
        'INSERT INTO clubs (club_name, member_count, location, remarks) VALUES (?, ?, ?, ?)',
        [
          club.club_name,
          club.member_count,
          club.location,
          club.remarks
        ]
      );
    }
    logger.info('已成功插入22个社团数据');

    logger.info('社团数据播种完成');
  } catch (error) {
    logger.error('社团数据播种失败:', error);
    throw error;
  }
}

export default seedClubs;